package com.atguigu.gmall.controller;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.item.client.ItemFeignClient;
import com.atguigu.gmall.model.product.SkuInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.Map;

/**
 * @author: 封捷
 * @create-date: 2022/8/24 15:31
 */
@Controller
public class ItemController {

    @Autowired
    private ItemFeignClient itemFeignClient;

    @GetMapping("/{skuId}.html")
    public String getSkuInfo(
            @PathVariable("skuId") Long skuId, Model model) {

        Result<Map<String, Object>> result = itemFeignClient.getItem(skuId);

        Map<String, Object> skuInfoMap = result.getData();

        // 针对缓存穿透情况，进行关键数据的判空操作
        Object skuInfoId = ((Map) skuInfoMap.get("skuInfo")).get("id");
        if (skuInfoId == null) {
            // skuInfoId 如果不存在，说明发生了缓存穿透，前往首页即可
            return "index/index";
        }

        // 整个 Map 数据整体全部存入 Model，
        // Map 的 Key 就是请求域中数据的属性名
        model.addAllAttributes(skuInfoMap);

        // 返回逻辑视图
        return "item/index";
    }

}
